<?php
	require_once PATH_OBJECT.'dataObject.php';
	
class dataObject_contrat extends dataObject
{
  		  	
 /* @desc    Identifiant du contrat
     * @var     int
     */
    public $_IDENTIFIANT_CONTRAT = 0;
    
    
    /**
     * @desc    Numero du contrat
     * @var     varchar
     */
    public $_NUMERO = '';
    

    /**
     * @desc    etat du contrat
     * @var     enum('A', 'R')
     */
    public $_ETAT = '';
    
    const ETAT_ACTIF = 'A';
    const ETAT_RESILIE = 'R';
    
    /**
     * @desc    date d'effet du contrat (facultatif)
     * @var     varchar
     */
    public $_DATE_EFFET = '';

    /**
     * @desc   date d'echeance du contrat
     * @var     int
     */
    public $_DATE_ECHEANCE = 0;
    
    
    /**
     * @desc   clause beneficiaire du contrat: est un type de condition de vente
     * @var     enum('A', 'BD', 'BA') A: ayant droit (par défaut) ; BD: ; BA:
     */
    public $_CLAUSE_BENEFICIAIRE = '';  	 
    
    
	/**
     * @desc   mode de paiement du contrat
     * @var     enum('C', 'E', 'P', 'V') 
     */
    public $_MODE_PAIEMENT = '';
    
    
	/**
     * @desc   frequence de paiement du contrat
     * @var     int
     */
    public $_FREQUENCE_PAIEMENT = '';
    
    
	/**
     * @desc   montant du contrat
     * @var     int
     */
    public $_MONTANT_ASSURE = 0;


	/**
     * @desc   id  de l'unite de l'agent souscrivant le contrat
     * @var     int
     */
    public $_IDENTIFIANT_UNITE = 0;
    
    
    /**
     * @desc   id du RIB du souscripteur du contrat
     * @var     int
     */
    public $_IDENTIFIANT_RIB = 'NULL';
    
    public $_DATE_RENOUVELLEMENT = '';
    
    
	public function __construct( $iId=0 )
    {
       parent::__construct();

       if ( $iId != 0 )
       {
            $sQuery = "SELECT /*+ dataObject_contrat::__construct */  c.*, 
            DATE_ADD(Date_echeance_contrat, INTERVAL 1 DAY)  as Date_renouvellement   
                       FROM contrat c
            		   WHERE Identifiant_contrat = ".$iId;
            
            $aRows =  self::$_oConnexion->query($sQuery);
			$aRow = $aRows[0];

			$this->_IDENTIFIANT_CONTRAT     = $iId;
            $this->_NUMERO           		= $aRow["Numero_contrat"];
            $this->_ETAT        			= $aRow["Etat_contrat"];
            $this->_DATE_EFFET           	= self::showDate($aRow["Date_effet_contrat"]); 
            $this->_DATE_ECHEANCE     		= self::showDate($aRow["Date_echeance_contrat"]);
            $this->_CLAUSE_BENEFICIAIRE     = $aRow["Clause_beneficiaire_contrat"];
            $this->_MODE_PAIEMENT           = $aRow["Mode_paiement"];
            $this->_FREQUENCE_PAIEMENT      = $aRow["Frequence_paiement"]; 
            $this->_MONTANT_ASSURE     		= $aRow["Montant_assure_contrat"];
            $this->_IDENTIFIANT_UNITE       = $aRow["Identifiant_unite"];
            $this->_IDENTIFIANT_RIB        	= $aRow["Identifiant_RIB"];	    	
            $this->_DATE_RENOUVELLEMENT     = self::showDate($aRow["Date_renouvellement"]);	    	 

       }
    }
    /**
     * récupere la table contrat selon le(s) criter(s) précisés ou pas 
	 */
    function contrat_select( $sCritere = null )
    {
    	$sQuery = "SELECT   *    
                   FROM contrat 
            	   WHERE 1=1 
            	   {$sCritere}";
        $aRow =  self::$_oConnexion->query($sQuery);

        return $aRow;
    }
 
    /*
   * Recherche d'un contrat à partir de son Id
    */
    function contrat_search($sIdContrat)

    {
        $aRow = false;
    	$sQuery = "SELECT   *    
                   FROM contrat 
            	   WHERE Identifiant_contrat=".self::$_oConnexion->text($sIdContrat);
        $aRow =  self::$_oConnexion->query($sQuery);
		
        return sizeof($aRow);
    }
    
    /******************************** Mamadou ***************************/
    /*
    * Recherche d'un contrat à partir de son Numéro
    */
    function contrat_searchNumero($sNumContrat)
    {

    	$sQuery = "SELECT  Numero_contrat    
                   FROM contrat 
            	   WHERE Numero_contrat =".self::$_oConnexion->text($sNumContrat);
        $aRow =  self::$_oConnexion->query($sQuery);
        
        return $aRow;
    }
    /*
    * Vérifie, à partir de son numéro, si un contrat est résilié
    */
    public function contrat_resilierEtat($sNumContrat)
    {
        $aRow = false;
    
	    	$sCritere = "SELECT Etat_contrat FROM contrat  
	    				WHERE Etat_contrat ='R' AND Numero_contrat = ".self::$_oConnexion->text($sNumContrat);
	        $aRow =  self::$_oConnexion->query($sCritere);

       	if(sizeof($aRow) == 0) {
        	$aRow=false;
        }
        
        return $aRow;
    }
    /*
    * Récupère les échéances du contrat correspondant à la cotisation en cours
     */
    public function contrat_getListEcheance($iIdContrat)
    {
         $aRow = false;
    	$sCritere = "SELECT Identifiant_echeance,Date_debut_echeance,Date_fin_echeance,Etat_echeance,Montant_echeance
    				FROM cotisation,echeancier  
    				WHERE (cotisation.Identifiant_contrat = '".$iIdContrat."') 
    				AND (cotisation.Identifiant_cotisation = echeancier.Identifiant_cotisation)";
        $aRow =  self::$_oConnexion->query($sCritere);

        
        return $aRow;
    }



	 /*
     * Renvoie la liste des intervenants(personnes jouant un rôle assuré sur le contrat) 
     * actifs dur le contrat
     */
	//public function contrat_getListIntervenants($idContrat)
	public function contrat_getListIntervenantAssureActif($idContrat)
    {
		
    	$sCritere = "SELECT role.Identifiant_personne,Identifiant_role,Type_assure,Etat_role,Nom_personne,Prenom_personne,Date_naissance_personne 
					FROM role,personne  
    				WHERE (Type_role = 'A') AND (Etat_role = 'A')
    				AND (Identifiant_contrat = '".$idContrat."') AND (role.Identifiant_personne = personne.Identifiant_personne)";
        $aRow =  self::$_oConnexion->query($sCritere);

        return $aRow;
    }
    /**
     * renvoie tous les assurés du contrat actif ou pas
     *
     * @param unknown_type $idContrat
     * @return unknown
     */
public function contrat_getAllAssure($idContrat)
    {
		
    	$sCritere = "SELECT role.Identifiant_personne, Identifiant_role,
    			Type_assure,Etat_role, Nom_personne, Prenom_personne, Date_naissance_personne 
					FROM role, personne  
    				WHERE (Type_role = 'A')
    				AND (Identifiant_contrat = '".$idContrat."') 
    				AND (role.Identifiant_personne = personne.Identifiant_personne)";
        $aRow =  self::$_oConnexion->query($sCritere);

        return $aRow;
    }
    
    
    /*
     * 3 –fournir les conditions d’indemnisation de type « délai » applicables
     * à la date d’effet du contrat de l’offre souscrite et des garanties souscrites
     */
	public function contrat_getDelaiIndemnisation($idOffre)
    {

    	$sCritere = "SELECT * 
					FROM conditionindemnisation  
    				WHERE (Type_condition_indemnisation = 'D') 
    				AND (Identifiant_offre = ".$idOffre.")";
        $aRow =  self::$_oConnexion->query($sCritere);

        return $aRow;
    }
    /*
     * 14 –fournir les conditions d’indemnisation de type « exclusion » applicables
     * à la date d’effet du contrat de l’offre souscrite et des garanties souscrites
     */
	public function contrat_getExclusionIndemnisation($idOffre)
    {

    	$sCritere = "SELECT * 
					FROM conditionindemnisation  
    				WHERE (Type_condition_indemnisation = 'E') 
    				AND (Identifiant_offre = ".$idOffre.")";
        $aRow =  self::$_oConnexion->query($sCritere);

        return $aRow;
    }

     /*
     * Retourne le bénéficiaire, sur un contrat donné
     */
    public function contrat_getBeneficiaire()
    {
    	$sCritere = "SELECT * 
					FROM role  
    				WHERE Type_role ='B'
    				AND Identifiant_contrat = ".$this->_IDENTIFIANT_CONTRAT;
        $aRow =  self::$_oConnexion->query($sCritere);

        return $aRow[0]['Identifiant_personne'];//$aRow;
    }
     /*
     * Retourne le souscripteur, sur un contrat donné
     */
    public function contrat_getSouscripteur()
    {
    	$sCritere = "SELECT * 
					FROM role  
    				WHERE Type_role ='S'
    				AND Identifiant_contrat = ".$this->_IDENTIFIANT_CONTRAT;
        $aRow =  self::$_oConnexion->query($sCritere);

        return $aRow[0]['Identifiant_personne'];//$aRow;

    }
        

    /************************* FIN  Mamadou *************************************/
    
    /*
    * Recherche contrat résilié en fonction de son Id
    */
	function contrat_resilier($sIdContrat)
    {
        $aRow = false;
    	$sQuery = "SELECT   *    
                   FROM contrat 
            	   WHERE (Etat_contrat='R') AND (Identifiant_contrat='".$sIdContrat."')";
        $aRow =  self::$_oConnexion->query($sQuery);
		
        return sizeof($aRow);
    }
     
//Liste des contrats d'une personne selectionnee
    public function contrat_listContratPersonne($idPersonne)
    {
    	$aRow = false;
    	$sCritere = "SELECT Nom_personne,Prenom_personne,Numero_contrat,Date_effet_contrat,
    	Date_echeance_contrat FROM role,personne,contrat  
    				WHERE (Etat_contrat='A') and role.Identifiant_contrat=contrat.Identifiant_contrat
    				 and
    				personne.Identifiant_personne=role.Identifiant_personne and
    				personne.Identifiant_personne="."'".$idPersonne."'"; 
    				     $aRow =  self::$_oConnexion->query($sCritere);

        
        return $aRow;
    }
    //Liste des contrats d'une personne en fonction de l'offre,
    // du produit et de la formule
	public function contrat_getListContratPersonnes($idPersonne)
	{
   			 $sQuery ="SELECT  contrat.Identifiant_contrat,
   			 		Numero_contrat,Etat_contrat,Date_effet_contrat,
   			 		f.Identifiant_formule, f.Code_formule, f.Libelle_formule,
    				 p.Identifiant_produit,	 p.Code_produit , p.Libelle_produit,
    				 o.Identifiant_offre,	 o.Code_offre , o.Libelle_offre
    				FROM garantiesouscrite garsous , garantie gar, formule f, produit p, offre o,contrat
    				WHERE garsous.Identifiant_personne ='.$idPersonne.' 
    				 AND f.Identifiant_formule = garsous.Identifiant_formule
    				  AND garsous.Identifiant_garantie = gar.Identifiant_garantie
    				  AND gar.Identifiant_produit = p.Identifiant_produit
    				  AND p.Identifiant_offre = o.Identifiant_offre
 					AND garsous.Identifiant_contrat=contrat.Identifiant_contrat";
    	$aRow =  self::$_oConnexion->query($sQuery);
    	return $aRow;
	}
	
	/**
	 * recherche les contrats sur lesquels la personne intervient via role
	 *
	 * @param unknown_type $idPersonne
	 * @return unknown
	 */
public function contrat_getListContratFromPersonne($idPersonne)
	{
   		 $sQuery = "SELECT distinct c.Identifiant_contrat,
   		 		    Numero_contrat, Etat_contrat, Date_effet_contrat,
   		 		    f.Identifiant_formule, f.Code_formule, f.Libelle_formule,
    			    p.Identifiant_produit,	 p.Code_produit , p.Libelle_produit,
    			    o.Identifiant_offre,	 o.Code_offre , o.Libelle_offre
    			FROM role rol,contrat c, garantiesouscrite garsous , garantie gar, 
    				 formule f, produit p, offre o
    			WHERE rol.Identifiant_personne = ".$idPersonne."
    			  AND rol.Identifiant_contrat = c.Identifiant_contrat 
    			  AND garsous.Identifiant_contrat = c.Identifiant_contrat
    			  AND f.Identifiant_formule = garsous.Identifiant_formule
    			  AND garsous.Identifiant_garantie = gar.Identifiant_garantie
    			  AND gar.Identifiant_produit = p.Identifiant_produit
    			  AND p.Identifiant_offre = o.Identifiant_offre  ";
    	
    	$aRow =  self::$_oConnexion->query($sQuery);
    	return $aRow;
	}
    /*
     * Renvoi les information sur le role et les personnes associées.
     */
	
	/**
	 * Renvoi les informations sur le role et les personnes associées (intervenants actifs).
	 *
	 * @param string $sIdContrat
	 * @return array
	 */
    public function contrat_getListIntervenant($sIdContrat)

    {
        $aRow = false;

    	$sCritere = "SELECT role.Identifiant_personne, Etat_role, Type_role, Type_assure,
			    	Nom_personne,Prenom_personne,Identifiant_contrat, Date_naissance_personne , Identifiant_role
			    	FROM role, personne  
					WHERE (Etat_role='A') 
    				AND (Identifiant_contrat='".$sIdContrat."') 
    				AND (role.Identifiant_personne = personne.Identifiant_personne)";
        $aRow =  self::$_oConnexion->query($sCritere);

        
        return $aRow;
    }
    
public function contrat_getAllIntervenant($sIdContrat)

    {
        $aRow = false;

    	$sCritere = "SELECT role.Identifiant_personne, Etat_role, Type_role,Type_assure,
			    	Nom_personne,Prenom_personne,Identifiant_contrat,Date_naissance_personne 
			    	FROM role,personne  
					WHERE (Identifiant_contrat='".$sIdContrat."') 
    				AND (role.Identifiant_personne = personne.Identifiant_personne)";
        $aRow =  self::$_oConnexion->query($sCritere);

        
        return $aRow;
    }
    
    /*
     * Retourne l'Id d'un contrat à partir de son Numéro contrat_getIdFromNumContrat()
     */
	public function contrat_getIdFromNumContrat($sNumContrat)
    {
        $aRow = false;
    
	    	$sCritere = "SELECT Identifiant_contrat FROM contrat  
	    				WHERE Numero_contrat = ".self::$_oConnexion->text($sNumContrat);
	        $aRow =  self::$_oConnexion->query($sCritere);

        return $aRow[0]['Identifiant_contrat'];
    }
    
/*
     * Retourne l'Id du role, formule, produt associés au contrat en cours
     */
	public function contrat_getProFormRole($nIdContrat)
    {
        $aRow = false;
    
	    	$sCritere = "SELECT DISTINCT r.Identifiant_role,o.Identifiant_offre,p.Identifiant_produit,f.Identifiant_formule 
	    	FROM role r, offre o, produit p, formule f
	    	WHERE (r.Identifiant_contrat = ".self::$_oConnexion->text($nIdContrat).") AND 
	    	(r.Identifiant_offre = o.Identifiant_offre) AND 
	    	(p.Identifiant_offre = o.Identifiant_offre) AND 
	    	(p.Identifiant_produit = f.Identifiant_produit)";
	        $aRow =  self::$_oConnexion->query($sCritere);

        return $aRow[0];
    }
    
    /**
     * Retourne la date d'effet du contart
     */
    public function contrat_getDateEffet($IdContrat)
    {
    	if(($IdContrat != null) || ($IdContrat != '' ))
    	{
	    	$sReq = "SELECT /* contrat_getDateEffet*/ Date_effet_contrat
	    			 FROM contrat
	    			 WHERE Identifiant_contrat = ".$IdContrat;
	    	
	    	$aRow =  self::$_oConnexion->query($sReq);

	        return $aRow[0]['Date_effet_contrat'];
    	} 
    	else return null;
    }
    /**
     * Cherche si le countrat en cours possède un bénéficiare
     *
     * @return unknown
     */
    public function contrat_getRoledeTypeBFromIdContrat($nIdContrat){
    	$sreq = "SELECT distinct Type_role
    			 FROM role 
    			 WHERE Identifiant_contrat = ".self::$_oConnexion->text($nIdContrat)." 
    			 AND Type_role='B'
    			 AND Etat_role = 'A' ";
    	
    	$aRow = self::$_oConnexion->query($sreq);
    	//echo $aRow[0]['Type_role'];
    	return $aRow[0]['Type_role'];
    }
    
	/**
	 * retourne l'identifiant personne ayant le type role souscripteur sur le contrat
	 *
	 * @param int $idContrat
	 * @return int identifiant personne souscripteur
	 */
    public function contrat_getIdSouscripteur($idContrat)
    {
    	$aRow = array();
		if($idContrat != null || $idContrat != '')
		{
	    	$sQuery = "SELECT /* contrat_getIdSouscripteur*/ Identifiant_personne
	    			 FROM role 
	    			 WHERE Identifiant_contrat=".$idContrat." 
	    			 AND Type_role = 'S'";
	    	
	    	$aRow = self::$_oConnexion->query($sQuery);
		}
    	if(!empty($aRow))
    		return $aRow[0]['Identifiant_personne'];
    	else return 0;
    }
    
public function contrat_getIdBeneficiaire($idContrat)
    {
    	$aRow = array();
		if($idContrat != null || $idContrat != '')
		{
	    	$sQuery = "SELECT Identifiant_personne
	    			 FROM role 
	    			 WHERE Identifiant_contrat=".$idContrat." 
	    			 AND Type_role='B' 
	    			 AND Etat_role = 'A' ";
	    	
	    	$aRow = self::$_oConnexion->query($sQuery);
		}
    	if(!empty($aRow))
    		return $aRow[0]['Identifiant_personne'];
    	else return 0;
    }
    
	public function contrat_isClauseAyantDroitExist($idContrat)
	{
		$aRow = array();
		if($idContrat != null || $idContrat != '')
		{
	    	$sQuery = "SELECT Identifiant_contrat
	    			 FROM contrat 
	    			 WHERE Identifiant_contrat=".$idContrat." 
	    			 AND Clause_beneficiaire_contrat = 'A'";
	    	
	    	$aRow = self::$_oConnexion->query($sQuery);
		}
    	if(!empty($aRow))
    		return $aRow[0]['Identifiant_contrat'];
    	else return 0;
    }
    

    
    /**
     * permet d'enregistrer un nouveau contrat
     *
     * @return mixed : Id du contrat inseré ou (false en cas d'échec de connexion ou 0 si aucun id retourné)
     */public function contrat_insert()
    {
    	
    	$sQuery = "INSERT INTO contrat (
					Numero_contrat, 
					Etat_contrat ,
					Date_effet_contrat ,
					Date_echeance_contrat ,
					Clause_beneficiaire_contrat ,
					Mode_paiement ,
					Frequence_paiement ,
					Montant_assure_contrat ,
					Identifiant_unite ,
					Identifiant_RIB
    			) values (
    			  ".self::$_oConnexion->text($this->_NUMERO)
			  .", ".self::$_oConnexion->text($this->_ETAT)
			  .", ".self::$_oConnexion->date($this->_DATE_EFFET)
			  .", ".self::$_oConnexion->date($this->_DATE_ECHEANCE)
			  .", ".self::$_oConnexion->text($this->_CLAUSE_BENEFICIAIRE)
			  .", ".self::$_oConnexion->text($this->_MODE_PAIEMENT)
			  .", ".self::$_oConnexion->text($this->_FREQUENCE_PAIEMENT)
			  .", ".self::$_oConnexion->text($this->_MONTANT_ASSURE)
			  .", $this->_IDENTIFIANT_UNITE
			  , ". self::$_oConnexion->text($this->_IDENTIFIANT_RIB)
    		  .")";
    
    	$mId = self::$_oConnexion->execute($sQuery);
    	return $mId;
    }
    
    public function contrat_exampleTransaction()
    {
    	$asQueries = array();
    	$asQueries[] = " requete 1";
    	$asQueries[] = " requete 2";
    	$asQueries[] = " requete 3";
    	return self::$_oConnexion->setTransaction($asQueries);
    }
   
    /**
     * *
     *Retourne la date d'effet et date d'echéance du contrat
     * @param unknown_type $sIdContrat
     * @return unknown
     */
	function contrat_DateEffetFinContrat($sIdContrat)

    {
        $sQuery = "SELECT   Date_effet_contrat, Date_echeance_contrat  
                   FROM contrat 
            	   WHERE Identifiant_contrat='".$sIdContrat."'";
        $aRow =  self::$_oConnexion->query($sQuery);
		 return $aRow;
    }
    
	/**
	 * recupere les infos sur l'offre, le produit et la formule souscrits pour un contrat
	 *
	 * @param int $idContrat
	 * @return array : contenant les infos
	 * @author FSF 29102010
	 * pkoi ajouter Identifiant_personne???
	 */
 	public function getFormuleProduitOffreDuContrat($idContrat)
    {
    	$sQuery ="SELECT distinct garsous.Identifiant_contrat, Etat_contrat,
    				Date_effet_contrat, Date_echeance_contrat,
    				f.Identifiant_formule, f.Code_formule, f.Libelle_formule,
    				 p.Identifiant_produit,	 p.Code_produit , p.Libelle_produit,
    				 o.Identifiant_offre,	 o.Code_offre , o.Libelle_offre
    				 , Identifiant_personne
    				FROM garantiesouscrite garsous , contrat, 
    				garantie gar, formule f, produit p, offre o
    				WHERE garsous.Identifiant_contrat = "."'".$idContrat."'".
    				" AND f.Identifiant_formule = garsous.Identifiant_formule
    					AND garsous.Identifiant_contrat=contrat.Identifiant_contrat
    				  AND garsous.Identifiant_garantie = gar.Identifiant_garantie
    				  AND gar.Identifiant_produit = p.Identifiant_produit
    				  AND p.Identifiant_offre = o.Identifiant_offre";
    	
    	$aRow =  self::$_oConnexion->query($sQuery);
    	return $aRow;
    }

    

    // Mamy
public function getProduitOffreDuContrat($idContrat)
    {
    	$sQuery ="SELECT distinct Libelle_produit,Libelle_offre,
    				garsous.Identifiant_contrat,
    				 p.Identifiant_produit,	 p.Code_produit , p.Libelle_produit,
    				 o.Identifiant_offre,	 o.Code_offre , o.Libelle_offre
    				FROM garantiesouscrite garsous , garantie gar,  produit p, offre o
    				WHERE garsous.Identifiant_contrat = "."'".$idContrat."'".
    				" AND garsous.Identifiant_garantie = gar.Identifiant_garantie
    				  AND gar.Identifiant_produit = p.Identifiant_produit
    				  AND p.Identifiant_offre = o.Identifiant_offre";
    	$aRow =  self::$_oConnexion->query($sQuery);
    	return $aRow;
    }
    
    
    
    

    //verifie si le contrat  a une couverture
public function contra_isCouvertureExist($idContrat)

    {
    	$sQuery ="SELECT count(garsous.Identifiant_contrat) as nbcontrat
    				FROM garantiesouscrite garsous ,contrat, 
    				garantie gar, formule f, produit p, offre o
    				WHERE garsous.Identifiant_contrat = "."'".$idContrat."'".
    				" AND f.Identifiant_formule = garsous.Identifiant_formule
    					AND garsous.Identifiant_contrat=contrat.Identifiant_contrat
    				  AND garsous.Identifiant_garantie = gar.Identifiant_garantie
    				  AND gar.Identifiant_produit = p.Identifiant_produit
    				  AND p.Identifiant_offre = o.Identifiant_offre";
    	$aRow = self::$_oConnexion->query($sQuery);
   
    	if(!empty($aRow)) return intval($aRow[0]['nbcontrat']);
    	else return 0;
    }
    
    
    //verifie le sinistre du contrat
public function contrat_isSinistreExist($idContrat)
    {
    	$sQuery="SELECT count(Identifiant_contrat) as nbcontrat
                   FROM sinistres, personne
            	   WHERE  Identifiant_contrat= '".$idContrat."'
            	     AND  personne.Identifiant_personne=sinistres.Identifiant_personne";           	   
            	   ;
    
    	$aRow = self::$_oConnexion->query($sQuery);
   
    	if(!empty($aRow)) return intval($aRow[0]['nbcontrat']);
    	else return 0;
    }




    //verifie la cotisation du contrat
	public function contrat_isCotisationExist($idContrat)
    {
    	$sQuery ="SELECT count(Identifiant_contrat) as nbcontrat
				FROM cotisation where Identifiant_contrat="."'".$idContrat."'".	
    			" ORDER BY Identifiant_cotisation DESC
				LIMIT 1"
				;
    
    	$aRow = self::$_oConnexion->query($sQuery);
   
    	if(!empty($aRow)) return intval($aRow[0]['nbcontrat']);
    	else return 0;
    }
    
    //vérifie  l'événement du contrat
public function contrat_isEvenementExist($idContrat)
    {
    	$sQuery ="SELECT count(*) as nbcontrat    
                   FROM evenement 
            	   WHERE Identifiant_contrat="."'".$idContrat."'"
				;
    
    	$aRow = self::$_oConnexion->query($sQuery);
   
    	if(!empty($aRow)) return intval($aRow[0]['nbcontrat']);
    	else return 0;
    }
    

	public function contrat_getCountIntervenantActif($sIdContrat)
	{
		$sQuery = "select count(Type_role) as NbreIntervenant
					FROM role,personne  
    				WHERE (Etat_role = 'A') 
    				AND (Identifiant_contrat = '".$sIdContrat."') 
    				AND (role.Identifiant_personne = personne.Identifiant_personne)";
        $aRow =  self::$_oConnexion->query($sCritere);
        return $aRow[0]['NbreIntervenant'] ;
  
	}	
	
	public function contrat_update()
	{
		
		$bup = false;
		$sReq = "UPDATE contrat SET
		
		Numero_contrat 				= '$this->_NUMERO',
		Etat_contrat  				= '$this->_ETAT',
		Date_effet_contrat 			= ".self::$_oConnexion->date($this->_DATE_EFFET).",
		Date_echeance_contrat  		= ".self::$_oConnexion->date($this->_DATE_ECHEANCE).",
		Clause_beneficiaire_contrat = '$this->_CLAUSE_BENEFICIAIRE',
		Mode_paiement  				= '$this->_MODE_PAIEMENT',
		Frequence_paiement  		= '$this->_FREQUENCE_PAIEMENT',
		Montant_assure_contrat  	= ".self::$_oConnexion->float($this->_MONTANT_ASSURE).",
		Identifiant_unite  			= $this->_IDENTIFIANT_UNITE,
		Identifiant_RIB  			= ".self::$_oConnexion->escape_null($this->_IDENTIFIANT_RIB)."
		
		WHERE Identifiant_contrat 	= ".$this->_IDENTIFIANT_CONTRAT." LIMIT 1";

		$bup = self::$_oConnexion->execute($sReq);
		return $bup;
	}
	
	public function contrat_modifieClauseBeneficiare($nIdContrat){
		$bup = false;
		
		$sReq = "UPDATE contrat SET Clause_beneficiaire_contrat = 'BA' WHERE Identifiant_contrat = '".$nIdContrat."' LIMIT 1";
		
		$bup = self::$_oConnexion->execute($sReq);
		
		return $bup;
	}	

	public function contrat_insertMultipleRole($aRoles, $idContrat)
    {
    	$asQueries = array();
    	foreach ($aRoles as $i => $aRole)
    	{
    		$asQueries[] = "INSERT into role(Type_role, Etat_role, Type_assure, Identifiant_personne, Identifiant_contrat)
    					values (".self::$_oConnexion->text($aRole['Type_role']).",
    					".self::$_oConnexion->text($aRole['Etat_role']).",
    					".self::$_oConnexion->text($aRole['Type_assure']).",
    					".$aRole['Identifiant_personne'].",
    					".$idContrat.")";
    	}
    	
    	return self::$_oConnexion->setTransaction($asQueries);
    }
    
	public function contrat_insertGarantiesSouscrites($aGaranties)
    {
    	$asQueries = array();
    	foreach ($aGaranties as $i => $aGarantie)
    	{
    		$asQueries[] = "INSERT into garantiesouscrite (Etat_garantie_souscrite, 
    		Date_effet_garantie_souscrite, Date_fin_effet_garantie_souscrite, Identifiant_contrat, 
    		Identifiant_personne, Identifiant_garantie, Identifiant_formule)
    					values ('".$aGarantie['Etat_garantie_souscrite']."',
    					".self::$_oConnexion->date($aGarantie['Date_effet_garantie_souscrite']).",
    					".self::$_oConnexion->date($aGarantie['Date_fin_effet_garantie_souscrite']).",
    					".$aGarantie['Identifiant_contrat'].",
    					".$aGarantie['Identifiant_personne'].",
    					".$aGarantie['Identifiant_garantie'].",
    					".$aGarantie['Identifiant_formule'].")";
    	}
    	
    	    	
    	return self::$_oConnexion->setTransaction($asQueries);
    }
    
/**
 * renvoi la liste des assurés (type_role =A) sur le contrat qui sont actifs (etat_role = A)
 *
 * @param unknown_type $idContrat
 * @return unknown
 */
    public function contrat_getListAssureActif($idContrat)
    {
    	$aRow = false;
		if($idContrat != null || $idContrat != '')
		{
	    	$sCritere = "SELECT distinct role.Identifiant_personne, Type_assure 
						FROM role
	    				WHERE (Type_role='A') 
	    				AND (Etat_role='A')
	    				AND Identifiant_contrat = ".$idContrat;
	    	
	        $aRow =  self::$_oConnexion->query($sCritere);
		}
        return $aRow;
    }
    
	public function contrat_getListAssure($idContrat)
    {
    	$aRow = false;
		if($idContrat != null || $idContrat != '')
		{
	    	$sCritere = "SELECT distinct role.Identifiant_personne 
						FROM role
	    				WHERE (Type_role='A') 
	    				AND (Identifiant_contrat = ".$idContrat.") ";
	        $aRow =  self::$_oConnexion->query($sCritere);
		}
        return $aRow;
    }
    
    /**
     * suppression d'un contrat, avec optionnellement la suppression des roles associés à ce contrat
     *
     * @param int $idContrat
     * @param boolean $bWithRoles
     * @return true si toutes les requetes bien executées, false sinon
     */
	public function contrat_delete($idContrat, $bWithRoles=false)
    {
    	$asQueries = array();
    	$asQueries[] = "DELETE FROM contrat WHERE Identifiant_contrat = ".$idContrat." LIMIT 1";
    	if($bWithRoles)
    		$asQueries[] = "DELETE FROM role WHERE Identifiant_contrat = ".$idContrat;
    
    	return self::$_oConnexion->setTransaction($asQueries);
    	/*if($iRet == 1)
    		return true;
    	else return false;*/
    }
    
    // Modification du contrat
    
    
    public function contrat_UpdateRoleGar($idContrat, $idPersonne)
    {
    	$aRow = false;
    	$asQueries = array();
    	$asQueries[] = "UPDATE role SET Etat_role='R' WHERE Etat_role='A' AND  Identifiant_contrat = ".$idContrat." AND Identifiant_personne=".$idPersonne;
    	$asQueries[] = "UPDATE garantiesouscrite SET Etat_garantie_souscrite='I' WHERE Etat_garantie_souscrite='A' AND  Identifiant_contrat = ".$idContrat." AND Identifiant_personne=".$idPersonne;
    	
        	
    
    	return self::$_oConnexion->setTransaction($asQueries);
    	/*if($iRet == 1)
    		return true;
    	else return false;*/
    }
    
    //Mamy , modifie l'etat du contrat l'etat du role et de la garantie
public function contrat_UpdateEtatcontratRoleInter($idContrat, $idPersonne)
    {
    	$aRow = false;
    	$asQueries = array();
    	$asQueries[] = "UPDATE role SET Etat_contrat='R' WHERE Etat_contrat='A'  AND  Identifiant_contrat = ".$idContrat." AND Identifiant_personne=".$idPersonne;
    	$asQueries[] = "UPDATE garantiesouscrite SET Etat_garantie_souscrite='I' WHERE Etat_garantie_souscrite='A'  AND  Identifiant_contrat = ".$idContrat." AND Identifiant_personne=".$idPersonne;
       	$asQueries[] = "UPDATE role SET Etat_role='I' WHERE Type_role='A'  AND  Identifiant_contrat = ".$idContrat." AND Identifiant_personne=".$idPersonne;
    	
    
    	return self::$_oConnexion->setTransaction($asQueries);
    	/*if($iRet == 1)
    		return true;
    	else return false;*/
    }
    
    /*
	 * Modifier Etat_prestation
	 */
    function modifierEtatPrestation($iIdPre,$sEtat)
    {
    	$aRow = false;
    	$sQuery = "UPDATE prestation SET Etat_prestation = '".$sEtat."' WHERE Identifiant_prestation = '".$iIdPre."'";
    	$aRow =  self::$_oConnexion->execute($sQuery);
    }
    
    /*
	 * Recherche d'un contrat à partir de son Numéro renvoi boolean
	 */
	function contrat_existe($sNumContrat)
	{
		$bTrouve =false;
		$sQuery = "SELECT  Numero_contrat
                   FROM contrat 
            	   WHERE Numero_contrat =".self::$_oConnexion->text($sNumContrat);
		$aRow =  self::$_oConnexion->query($sQuery);
		if (count($aRow)!=0)
		{
			$bTrouve = true;
		}
		return $bTrouve;
	}

/**
	 * Renvoi les sinistres du contrat
	 *
	 * @param string $sIdContrat
	 * @return array
	 */
	public function contrat_getListSinistres($iIdContrat, $sEtatSinistre = null)
	{
		$aRow = false;
		$sCritere = "SELECT DISTINCT pre.Identifiant_sinistre, Type_sinistre, Date_survenance_sinistre,
				Nom_personne, Prenom_personne
    				FROM sinistres s,personne p, prestation pre
    				WHERE s.Identifiant_contrat ='".$iIdContrat."'
    				AND pre.Identifiant_sinistre = s.Identifiant_sinistre 
    				AND s.Identifiant_personne = p.Identifiant_personne";
		
		if ($sEtatSinistre)
		{
			$sCritere = $sCritere." AND s.Etat_sinistre = '".$sEtatSinistre."'";
		}
//		echo $sCritere;
		$aRow =  self::$_oConnexion->query($sCritere);
		return $aRow;
	}
	
	/**
	 * Renvoi les contrats actifs dont la date d'echeance est comprise dans la periode d'echeance 
	 * @param bool $bWithEcheance si true on selectionne les contrat echu
	 * @return array
	 */	
	public function contrat_getListContratActif($sDateDebut, $sDateFin)
	{
		$aResRow = array();
		//$sWhere = ($bWithEcheance === true)?" and date(date_echeance_contrat) = date(now())" : "";
		$sWhere = " AND date(date_echeance_contrat) >= date(str_to_date('$sDateDebut','%d-%m-%Y')) 
					AND date(date_echeance_contrat) <= date(str_to_date('$sDateFin','%d-%m-%Y'))";
		$sQuery = "
			SELECT identifiant_contrat, 
				DATE_ADD(Date_echeance_contrat, INTERVAL 1 DAY)  as Date_eff_renouvelmt,
				DATE_ADD(Date_echeance_contrat, INTERVAL 1 YEAR)  as Date_ech_renouvelmt
			FROM contrat 
			WHERE etat_contrat = 'A' ". $sWhere;
		
		$aRows =  self::$_oConnexion->query($sQuery);
		if(count($aRows)>0)
		{
			foreach ($aRows as $aRow)
				$aResRow[] = $aRow['identifiant_contrat'];
		}
		
		//return $aResRow;
		return $aRows;
	}
	
	/**
	 * Renvoi cree un nouveau contrat 
	 * @return bool 
	 */	
	public function contrat_renouvellerContrat($iIdContrat, $sDateEffet, $sDateEcheance)
	{ 
		$sQuery = "";
		if($iIdContrat != null)
		{
			/*if(is_array($iIdContrat))
				$sWhere = "where identifiant_contrat in (".implode(',',$iIdContrat).")";
			else 	
				$sWhere = "where identifiant_contrat = ".$iIdContrat;
			*/
			$sQuery = "
				update contrat set 
				date_effet_contrat = '".$sDateEffet."' ,
				date_echeance_contrat = '".$sDateEcheance."' 
				where identifiant_contrat = ".$iIdContrat ;
		}
		return $sQuery;
	}
	
	public function contrat_getListTarif($iIdContrat)
	{
		
		$aRow = null;
		if($iIdContrat != null)
		{
			if(is_array($iIdContrat))
				$sWhere = " and g.identifiant_contrat in (".implode(',',$iIdContrat).")";
			else 	
				$sWhere = " and g.identifiant_contrat = ".$iIdContrat;
			
			$sQuery = "
				select distinct t.*, g.identifiant_contrat, c.montant_assure_contrat, 
				c.frequence_paiement, c.date_effet_contrat, c.date_echeance_contrat
				from garantiesouscrite g, tarif t, contrat c
				where g.identifiant_contrat = c.identifiant_contrat
				and g.identifiant_formule = t.identifiant_formule ". $sWhere . " order by g.identifiant_contrat";
			
			$aRow =  self::$_oConnexion->query($sQuery);
		}
		
		return $aRow;
	}

	
	
	public function contrat_getNumeroAvenantCotisation($iIdContrat)
	{
		$iNumero = 0;
		$sQuery = "select numero_avenant_cotisation from cotisation where identifiant_contrat=".$iIdContrat;
		$aRow =  self::$_oConnexion->query($sQuery);
		if($aRow)
		{
			$iNumero = $aRow[0]['numero_avenant_cotisation'];
		}
		$iNumero +=1;
		return $iNumero ;
	}
	
	public function contrat_setNewCotisation($iIdContrat)
	{
		$bRes = false;
		$afMontantCotisation 	= array();
		$afMontantFraisEcheance = array();
		$afMontantTarifBase 	= array();
		$afMontantIntermediaire = array();
		$asTypeTarif 			= array();
		$aDateDebut 			= array();
		$aDateFin  				= array();
		$aDataRow				= array();
		
		if($iIdContrat != null)
		{
			$aRowContrats = $this->contrat_getListTarif($iIdContrat);
			
			if(count($aRowContrats) > 0)
			{				
				foreach($aRowContrats as $acontrat)
				{
					$acontrat['montant_assure_contrat'] = self::$_oConnexion->float($acontrat['montant_assure_contrat']);
					$afMontantTarifBase[$acontrat['identifiant_contrat']] = self::$_oConnexion->float($acontrat['Montant_tarif_base']);
					$acontrat['Taux_tarif_base'] = self::$_oConnexion->float($acontrat['Taux_tarif_base']);
					$fTauxEcheanceMensuel = ($acontrat['frequence_paiement'] == 'M') ? $acontrat['Taux_echeance_mensuel'] : ($acontrat['frequence_paiement'] == 'T') ? $acontrat['Taux_echeance_trimestriel'] : ($acontrat['frequence_paiement'] == 'S') ? $acontrat['Taux_echeance_semestriel'] : 0;
					$fTauxEcheanceMensuel = self::$_oConnexion->float($fTauxEcheanceMensuel);
					$afMontantIntermediaire[$acontrat['identifiant_contrat']] = self::$_oConnexion->float($acontrat['Taux_tarif_base'] * $acontrat['montant_assure_contrat']);
					
					$aDateDebut[$acontrat['identifiant_contrat']] 	= self::$_oConnexion->date($acontrat['date_effet_contrat']);
					$aDateFin[$acontrat['identifiant_contrat']]		= self::$_oConnexion->date($acontrat['date_echeance_contrat']);
										
					if(!isset($afMontantCotisation[$acontrat['identifiant_contrat']]))
						$afMontantCotisation[$acontrat['identifiant_contrat']] = 0;
						
					if($acontrat['montant_assure_contrat'] == 0 || $acontrat['montant_assure_contrat'] == null)
					{
						$afMontantCotisation[$acontrat['identifiant_contrat']] += $afMontantTarifBase[$acontrat['identifiant_contrat']] + ( $fTauxEcheanceMensuel * $afMontantTarifBase[$acontrat['identifiant_contrat']]);
					}
					else
					{
						$afMontantCotisation[$acontrat['identifiant_contrat']] += $afMontantIntermediaire[$acontrat['identifiant_contrat']] + ($fTauxEcheanceMensuel * $afMontantIntermediaire[$acontrat['identifiant_contrat']]);
					}
					
					if($acontrat['Type_tarif'] == 'M')
					{
						$asTypeTarif[$acontrat['identifiant_contrat']] = 'M';
					}
					else
					{
						$asTypeTarif[$acontrat['identifiant_contrat']] = 'T';
					}
				}
								
				//calcul des montants cotisations et des  montants des frais d’échéance
				foreach($afMontantCotisation as $idc => $fCotis)
				{					
					if($asTypeTarif[$idc] == 'M')
					{
						$afMontantFraisEcheance[$idc] = $fCotis - $afMontantTarifBase[$idc];
					}
					else
					{
						$afMontantFraisEcheance[$idc] = $fCotis - $afMontantIntermediaire[$idc];
					}
				}
				
				// Mise à jour de la table Cotisation
				$aQuery = array();
				$aResCotisation = array();
				foreach($afMontantCotisation as $idc => $fCotis)
				{
					 $numero = $this->contrat_getNumeroAvenantCotisation($idc);
					 $fMontantCotisation = round($fCotis);
					 $fMontantFraisEcheance = round($afMontantFraisEcheance[$idc]);
					 $sDateDebut = $aDateDebut[$idc];
					 $sDateFin = $aDateFin[$idc];
					 
					 $aDataRow[$idc] = array(
					 	"numero_avenant_cotisation" => $numero,
					 	"montant_base_cotisation" => $fMontantCotisation,
					 	"montant_frais_echeance_cotisation" => $fMontantFraisEcheance,
					 	"date_debut_cotisation" => $sDateDebut,
					 	"date_fin_cotisation" => $sDateFin
					 );
				}
				
			}
		}
		return $aDataRow; 
	}
	

	
	public function contrat_setNewEcheance($iIdContrat, $aCotisation)
	{
		$aQuery = array();	
		$aRowContrats = $this->contrat_getListTarif($iIdContrat);
		if(count($aRowContrats) > 0)
		{	
			foreach($aRowContrats as $acontrat)
			{
				$aCotisation[$acontrat['identifiant_contrat']]['frequence_paiement']  = $acontrat['frequence_paiement'];
				$aCotisation[$acontrat['identifiant_contrat']]['date_effet_contrat']  = $acontrat['date_effet_contrat'];
				$aCotisation[$acontrat['identifiant_contrat']]['identifiant_contrat'] = $acontrat['identifiant_contrat'];
			}
				
			foreach($aCotisation as $id=>$acontrat)
			{
				if($acontrat['frequence_paiement'] == 'A')	$nbreglement = 1;
				elseif($acontrat['frequence_paiement'] == 'M')	$nbreglement = 12;
				elseif($acontrat['frequence_paiement'] == 'T')	$nbreglement = 4;
				elseif($acontrat['frequence_paiement'] == 'S')	$nbreglement = 2;
				else $nbreglement = 1;
				
				if($nbreglement == 12) $nbmois = 1;						
				if($nbreglement == 2)  $nbmois = 6;
				if($nbreglement == 4)  $nbmois = 3;
				if($nbreglement == 1)  $nbmois = 12;
				
				$sDateDebut = $acontrat['date_effet_contrat'];
				$i=0;
				do
				{					
					$sDateFin = ajoutDate($sDateDebut, $nbmois, -1, 0);
					$fMontantEcheance = $acontrat['montantecotisation']/$nbreglement;
					$iMax = $acontrat['idcotisation'];
					
					$sQuery = "
						select count(*) as nb from echeancier 
						where Date_debut_echeance = ".self::$_oConnexion->date($sDateDebut)." 
						and Date_fin_echeance = ".self::$_oConnexion->date($sDateFin)." 
						and Etat_echeance = 'R' and Montant_echeance = ".$fMontantEcheance." 
						and Identifiant_cotisation = ".$iMax;
						
					$Res = self::$_oConnexion->query($sQuery);
					$iNb = $Res[0]['nb'];
					
					if($iNb == 0) 
					{
						$aQuery[] = "insert into echeancier 
							values('',".self::$_oConnexion->date($sDateDebut).",
							".self::$_oConnexion->date($sDateFin).",'AA',".$fMontantEcheance.",".$iMax.")";
					}
					
					$sDateDebut = ajoutDate($sDateFin,0,1,0);
					$i++;
					
				}while($i < $nbreglement);
			}	
		}
		return $aQuery;
	}
	
	public function contrat_setNewEvenement($iIdContrat)
	{
		$aQuery = array();
		$aRowContrats = $this->contrat_getListTarif($iIdContrat);
		$aRowContratID = array();
		if(count($aRowContrats) > 0)
		{
			foreach($aRowContrats as $acontrat)
			{
				$aRowContratID[] = $acontrat['identifiant_contrat'];
			}
		}
		$aRowContratID = array_unique($aRowContratID) ;
		if(count($aRowContratID) > 0)
		{	
			foreach($aRowContratID as $acontrat)
			{
				$aQuery[] = "
					insert into evenement (Type_evenement, Sous_type_evenement, Date_evenement, Identifiant_contrat)
					values('G', 'AREC', now(),".$acontrat.")";	
			}
		}
		return $aQuery;
	}
	

	public function desactivateAllRoleActifContrat($idContrat)
    {
    	$sQuery = "UPDATE role SET Etat_role = 'I' 
    				WHERE Identifiant_contrat = ".$idContrat.
				  " AND Etat_role = 'A' ";
    	if($idContrat != '' || $idContrat != null)
    		return self::$_oConnexion->execute($sQuery);
    	else return false;
    }
    /*****************************************************************************************************/
    /************ fonctions reprises *********************************************************************/

    /**
     * Récupére le(s) montant(s) du tarif de base, le(s) taux du tarif de base 
     * et le(s) taux de frais d’échéance applicables à la date d’effet du contrat, 
     * pour la formule sélectionnée et la garantie souscrite
     *
     * @param int $IdContrat
     * @return unknown
     */
    public function contrat_getTarif($IdContrat)
    {
    	$dDateEffet = $this->contrat_getDateEffet($IdContrat);
		$sReqTarif = "SELECT DISTINCT /*+ formule_getTarif */ Identifiant_tarif,  
					t.Montant_tarif_base, 
					t.Taux_tarif_base, 
					t.Taux_echeance_mensuel,
					t.Taux_echeance_trimestriel,
					t.Taux_echeance_semestriel,
					t.Type_tarif,
					t.Identifiant_formule, t.Identifiant_garantie
			FROM tarif t,  
				garantiesouscrite garsous
			WHERE garsous.Identifiant_contrat = '".$IdContrat."' 
			 AND (garsous.Identifiant_formule = t.Identifiant_formule) 
			 AND (t.Identifiant_garantie = garsous.Identifiant_garantie 
			      OR t.Identifiant_garantie  is NULL) 
			 AND (t.Date_fin_tarif >= '".$dDateEffet."' OR t.Date_fin_tarif is null)";

			$aRows = self::$_oConnexion->query($sReqTarif);
			
		return $aRows;
    }
    
    /**
     * Enter description here...
     *
     * @param unknown_type $iIdContrat
     * @return unknown
     */
    public function contrat_setNewCotisation_2($iIdContrat, $sFrequencePaiement, $fMntAssure)
	{
		$aDataRow		= array();
		$fTauxEcheance 	= 0;
		$iNbreEcheance 	= 0;
		$sTypeTarif 	= '';
		$fMntBaseCotisation = 0;
		
		if($iIdContrat != null)
		{
			$aTarifs = $this->contrat_getTarif($iIdContrat);
			foreach ($aTarifs as $iKey => $aTarif) 
			{
				switch($sFrequencePaiement)
				{
					case "A":
						$fTauxEcheance = 0;
						$iNbreEcheance = 1;
						break;
					
					case "M":
						$fTauxEcheance = $aTarif['Taux_echeance_mensuel'];
						$iNbreEcheance = 12;
						break;
					
					case "T":
						$fTauxEcheance = $aTarif['Taux_echeance_trimestriel'];
						$iNbreEcheance =  4;
						break;
					
					case "S":
						$fTauxEcheance = $aTarif['Taux_echeance_semestriel'];
						$iNbreEcheance = 2;
						break;
				}
				//RÉCUPÉRATION DU TYPE DE TARIF 
				$sTypeTarif = $aTarif['Type_tarif'];
				
				if($sTypeTarif == 'M')//TARIF MONTANT
				{
					//---- CALCUL DU MONTANT DE LA COTISATION
					$fTauxEch = floatval($fTauxEcheance)/100 ; 
					$fMntCotisation = ceil( $aTarif['Montant_tarif_base'] + ($aTarif['Montant_tarif_base'] * $fTauxEch));
					
					//---- CALCUL DU MONTANT DES FRAIS D'ÉCHÉANCE
					$fMntFraisEcheance = $fMntCotisation - $aTarif['Montant_tarif_base'];
					
					//MONTANT BASE COTISATION FONCTION DU TYPE DE TARIF QU'ON A.
					$fMntBaseCotisation = $aTarif['Montant_tarif_base'];
				}
				else if($sTypeTarif == 'T')//TARIF TAUX
				{
					//---- CALCUL DU MONTANT DE LA COTISATION
					$fMntIntermediaire = $aTarif['Taux_tarif_base'] * $fMntAssure; 
					$fTauxEch = floatval($fTauxEcheance)/100 ; 
					$fMntCotisation    = ceil($fMntIntermediaire + ($fMntIntermediaire * $fTauxEch));
					
					//---- CALCUL DU MONTANT DES FRAIS D'ÉCHÉANCE
					$fMntFraisEcheance = $fMntCotisation - $fMntIntermediaire;
					
					//MONTANT BASE COTISATION FONCTION DU TYPE DE TARIF QU'ON A.
					$fMntBaseCotisation = $fMntIntermediaire;
				}
			
				//si ce tarif s’applique à la garantie
				//le montant de la cotisation est la somme des montants de cotisation calculés pour chaque garantie souscrite
				if(intval($aTarif['Identifiant_garantie']) != 0 ) 
				{
					$fMntTotalCotisation += $fMntCotisation;//ON TOTALISE LES MONTANTS COTISATION CALCULÉS
				}
				else $fMntTotalCotisation = $fMntCotisation;
			}
			$iNumero = $this->contrat_getNumeroAvenantCotisation($iIdContrat);
			$aDataRow[] = array(
					 	"numero_avenant_cotisation" => $iNumero,
					 	"montant_cotisation" => $fMntTotalCotisation,
						"montant_base_cotisation" => $fMntBaseCotisation,
					 	"montant_frais_echeance_cotisation" => $fMntFraisEcheance,
						"nb_echeance" => $iNbreEcheance
					 );	
		}
		
		return $aDataRow; 
	}
	

	public function contrat_setNewEcheance_2($iIdContrat, $aCotisations)
	{
		$aCotisation = $aCotisations[0];
		$aQuery = array();	
		$iNombreEcheance = intval($aCotisation["nb_echeance"]);
		$fMontantEcheance = 0;
		if($iNombreEcheance != 0)
			$fMontantEcheance =  round ( ($aCotisation['montant_cotisation']/$iNombreEcheance));
		//ON RÉCUPÈRE LA FRÉQUENCE DE RÉGLEMENT EN FONCTION DU NOMBRE DE RÉGLEMENT.
		if($iNombreEcheance == 12) 	 $nNbMois = 1;
		if($iNombreEcheance == 2)	 $nNbMois = 6;
		if($iNombreEcheance == 4)	 $nNbMois = 3;
		if($iNombreEcheance == 1)	 $nNbMois = 12;
		
		//ON AJOUTE LE NOMBRE DE MOIS CORRESPONDANT À LA FRÉQUENCE DE RÉGLEMENT.
		$dDateDebutEcheance = $aCotisation["date_debut"];
		
		for($i=1;$i<=$iNombreEcheance;$i++)
		{
			//NOUVELLE DATE FIN ECHEANCE
			$dDateFinEcheance = ajoutDate($dDateDebutEcheance, $nNbMois, -1, 0);
			$aQuery[] = "insert into echeancier (
					Date_debut_echeance,
					Date_fin_echeance,
					Etat_echeance,
					Montant_echeance,
					Identifiant_cotisation)
						 values('".$dDateDebutEcheance."',
							'".$dDateFinEcheance."','AA',".$fMontantEcheance.",".$aCotisation["idcotisation"].")";
			//NOUVELLE DATE DEBUT ECHEANCE
			$dDateDebutEcheance = ajoutDate($dDateFinEcheance, 0, 1,0);
		}
		
		return $aQuery;
	}
	
	public function contrat_setEventRenouvellement($iIdContrat)
	{
		$sQuery = "
					insert into evenement (Type_evenement, Sous_type_evenement, Date_evenement, Identifiant_contrat)
					values('G', 'AREC', now(),".$iIdContrat.")";	
		
		return $sQuery;
	}
}
?>